<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>前端自我修养</title>
    <meta name="generator" content="VuePress 1.5.2">
    <link rel="apple-touch-icon" href="/blog/apple-touch-icon.png">
    <link rel="icon" href="/blog/favicon.ico">
    <link rel="manifest" href="/blog/manifest.json">
    <link rel="mask-icon" href="/blog/icons/icon.svg" color="#ffffff">
    <meta name="description" content="可能是全网最给力的前端博客">
    <meta name="theme-color" content="#ffffff">
    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="default">
    <meta name="msapplication-TileImage" content="/icons/icon-144x144.png">
    <link rel="preload" href="/blog/assets/css/0.styles.3f022aa2.css" as="style"><link rel="preload" href="/blog/assets/js/app.7fa07907.js" as="script"><link rel="preload" href="/blog/assets/js/2.b6c629b5.js" as="script"><link rel="preload" href="/blog/assets/js/11.34cd2f44.js" as="script"><link rel="preload" href="/blog/assets/js/3.589a64d8.js" as="script"><link rel="prefetch" href="/blog/assets/js/10.8e59817e.js"><link rel="prefetch" href="/blog/assets/js/12.445d88fd.js"><link rel="prefetch" href="/blog/assets/js/13.e6460b96.js"><link rel="prefetch" href="/blog/assets/js/14.d0ee0fcf.js"><link rel="prefetch" href="/blog/assets/js/15.e91e78ed.js"><link rel="prefetch" href="/blog/assets/js/16.8310de97.js"><link rel="prefetch" href="/blog/assets/js/17.6ca97902.js"><link rel="prefetch" href="/blog/assets/js/18.a82e534b.js"><link rel="prefetch" href="/blog/assets/js/19.e3a914ee.js"><link rel="prefetch" href="/blog/assets/js/20.6db77b80.js"><link rel="prefetch" href="/blog/assets/js/21.e705be23.js"><link rel="prefetch" href="/blog/assets/js/22.efc39414.js"><link rel="prefetch" href="/blog/assets/js/23.5f4c7658.js"><link rel="prefetch" href="/blog/assets/js/24.359a62e4.js"><link rel="prefetch" href="/blog/assets/js/25.c49ef7a9.js"><link rel="prefetch" href="/blog/assets/js/26.8d45691f.js"><link rel="prefetch" href="/blog/assets/js/27.364b1802.js"><link rel="prefetch" href="/blog/assets/js/28.485228c0.js"><link rel="prefetch" href="/blog/assets/js/29.0ee8fc42.js"><link rel="prefetch" href="/blog/assets/js/30.465920a7.js"><link rel="prefetch" href="/blog/assets/js/4.1dbf8b08.js"><link rel="prefetch" href="/blog/assets/js/5.9253897f.js"><link rel="prefetch" href="/blog/assets/js/6.4c1f13e3.js"><link rel="prefetch" href="/blog/assets/js/7.bc1839d0.js"><link rel="prefetch" href="/blog/assets/js/8.611f5ec5.js"><link rel="prefetch" href="/blog/assets/js/9.5813bb74.js">
    <link rel="stylesheet" href="/blog/assets/css/0.styles.3f022aa2.css">
  </head>
  <body>
    <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/blog/" class="home-link router-link-active"><img src="/blog/app.png" alt="卢本伟广场" class="logo"> <span class="site-name can-hide">卢本伟广场</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/blog/dsm/" aria-current="page" class="nav-link router-link-exact-active router-link-active">
  歪比歪比
</a></div><div class="nav-item"><a href="/blog/lbw/" class="nav-link">
  歪比吧卜
</a></div> <!----></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/blog/dsm/" aria-current="page" class="nav-link router-link-exact-active router-link-active">
  歪比歪比
</a></div><div class="nav-item"><a href="/blog/lbw/" class="nav-link">
  歪比吧卜
</a></div> <!----></nav>  <ul class="sidebar-links"><li><a href="/blog/dsm/" aria-current="page" class="active sidebar-link">前端自我修养</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/blog/dsm/#前言" class="sidebar-link">前言</a></li><li class="sidebar-sub-header"><a href="/blog/dsm/#心法" class="sidebar-link">心法</a></li></ul></li><li><a href="/blog/dsm/algorithm.html" class="sidebar-link">前端面试算法</a></li><li><a href="/blog/dsm/jsbook.html" class="sidebar-link">JS高级程序设计</a></li><li><a href="/blog/dsm/cc150.html" class="sidebar-link">程序员面试金典</a></li><li><a href="/blog/dsm/pattern.html" class="sidebar-link">前端设计模式</a></li><li><a href="/blog/dsm/architecture.html" class="sidebar-link">前端工程架构</a></li><li><a href="/blog/dsm/protocol.html" class="sidebar-link">计算机网络</a></li><li><a href="/blog/dsm/node.html" class="sidebar-link">服务端开发</a></li><li><a href="/blog/dsm/webgl.html" class="sidebar-link">图形3D开发</a></li><li><a href="/blog/dsm/lodash.html" class="sidebar-link">jQuery / Lodash</a></li><li><a href="/blog/dsm/finger.html" class="sidebar-link">AlloyFinger</a></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="前端自我修养"><a href="#前端自我修养" class="header-anchor">#</a> 前端自我修养</h1> <img id="topImg" src="/blog/images/IMG_9026.jpeg"> <h2 id="前言"><a href="#前言" class="header-anchor">#</a> 前言</h2> <p>2019年秋招，某大厂前端、后端、测试、算法笔试题用的是同一套题（即2小时4道编程题），讨论区全部由java、python、c++、复杂的算法名词承包，从头到尾找不到任何js题解，部分前端er们敢哭不敢言欢声笑语中零AC交白卷，交白卷就意味着大概率可以进人才库，可见算法能力对于前端来说是获取面试资格的一个重要因素。于是就有人在一次校招失利后就励志魔鬼式地刷题半年，打算成为算法大神在下次的校招笔试大放异彩只为一个面试机会，最后面试却因知识面太窄、JS基础不扎实、没经验等理由被大厂拒之门外，如果再来个考研失败，男女朋友分手，家里人逼着转行，就只能去发帖说自己太难了！</p> <p><b>本博客定位？</b>本博客列举了常见的校招社招面试中会问到的需要手写的前端算法，毕竟拿下面试才能拿下offer，但如果真有人想刻意把笔试也拿下，可以精读剑指offer和程序员代码面试指南然后leetcode刷150题，虽然不建议这么做，毕竟前端是后端的补集，而且时间宝贵尤其是校招生，应该考虑学习成本把时间花在对的东西上，如计算机网络协议、自己技术栈的底层实现原理、前端框架的设计思想、CSS布局、JS核心概念、性能优化、错误监控、工程化、模块化、浏览器机制、跨域、网络协议、网络安全等等。其实前端面试只要不装逼，算法最多问到二叉树和动态规划，而且真的有前端刷了800道算法题，在笔试中叱咤风云到春招还找不到工作的。</p> <h2 id="心法"><a href="#心法" class="header-anchor">#</a> 心法</h2> <p><b>前端算法地位？</b>目前市面上的算法工程师的水平可以大概地初略地分为很多个等级：什么算法都不会 =&gt; 精通剑指offer、程序员代码面试指南、程序员面试金典 =&gt; ACM冠军 =&gt; 算法直博 =&gt; 算法砖家，多数前端工程师的算法巅峰时期也就是校招应付应付笔试的时候，因为这是唯有的几个检测学生学习能力和潜力的方法，加上前端笔试成绩其实是个可有可无的东西尤其是实习项目经验够厉害的时候，根本没有人会看一个有着1年多全栈实习经验同学的笔试成绩，主要看面试表现和业务方面、技术方面知识的积累，有很多有大小厂实习经验的同学，4道笔试题就AC了一题也发起了面试，再加上前端开发过程中根本遇不到校招后端级别的算法题，所以绝大部分前端工程师的算法水平止步于精通剑指offer。就算一个前端工程师业余时间学了学算法，在后端工程师眼里就是三脚猫算法，如同一个会Node的纯前端觉得自己是全栈，在有后端底子的服务端工程师眼里其实就是个弟弟，如同一个WebGL前端花了点时间学了学着色器语言，游戏开发工程师看了就会说：“你只看到了歪比歪比，而你把我只想成了歪比吧卜，实际上我是are you good马来西亚~”</p> <img src="/blog/images/IMG_9006.jpg" class="emo"> <p><b>为什么前端校招笔试会考工作中完全用不到的算法？</b>很简单，因为公司出题组懒，虽然招的是前端但就是要用后端学的高级算法来折磨前端候选人，老折磨王了，如果说一个前端岗位能拿到4个编程题2小时的卷子，如果不是因为这个公司偷懒，只有可能这个公司要的是有后端底子，或者算法岗后端岗转前端的人，或者招的就是后端工程师进去手把手教前端，因为正常的前端笔试题只会有选择题、DOM编程题、问答题、和简单算法题，有的甚至是30道纯选择题加问答题，拿纯后端的卷子给前端做就是耍流氓，就算是前端面试官来做也没几个做得出来，但是本着校招看基础，社招看项目，大公司竞争激烈，这么做也是说得通的。<b>所以正常的前端怎么准备校招笔试呢？</b>疯狂地练习DOM编程，能做到盲打轮播图、瀑布流、Tab组件、各种适配布局、文字滚动、购物车、手风琴、弹窗等等乱七八糟的组件，再把专业课和JS学好对付选择题问答题就可以了，<b>可为什么很少有公司校招笔试这么考呢？</b>因为大学根本没有前端专业，其次考察应聘者的组件设计能力对于应届生来说有点太早，再加上这是针对H5移动端开发的前端出的题，给其他方向的前端出有点不合适，必须得因人而异地面试的时候出，再说算法又是计算机必修课为什么不考呢，而且系统数字评分加人工批改很公正公平，就算全部的前端选手里最高也只AC了1.5道题，大公司只面AC了1道题以上的人，还是有很多的面试要进行，所以算法某些情况下还是有必要准备准备的。</p> <p><b>为什么说某些情况下要准备算法？</b>因为只要前端经验够丰富，笔试不做都会发起面试，甚至面试都只是走个形式，这样的例子有很多。虽然很多时候笔试面试非常地迷，努力提升自己全方位的知识深度是永远不会错的。总而言之，很多时候并不是算法差笔试没做好导致没面试，而是前端背景不行人家公司懒得面。当然，如果前端背景没有，算法也差，什么亮点都没有那就真的没办法了。<b>怎么样叫有前端背景？</b>vue全家桶、react全家桶、koa、express、axios源码随便写，jwt、session、websocket、https、webpack原理滚瓜烂熟，再配上云开发、three.js、tensorflow.js、webpack工程化、算法比赛拿过奖、小程序比赛拿过奖、出过专栏有维护微信公众号，或者退一步讲没前端背景，专业课贼好GPA爆高、写出个自己的操作系统、编译器、游戏引擎，1k星的仓库，或者大一就已经入门前端，就算笔试4题对1题，也没人会让这样的候选人溜走的，offer给定了，只剩是不是sp的问题。</p> <img src="/blog/images/IMG_7723.gif" class="emo"> <p><b>为什么前端面试也会考工作中完全用不到的算法？</b>主要原因有三个，<b>第一个原因</b>，算法能方便面试官收尾一场面试，如果面试一个候选人发现完全不行，自己也已经不想唠嗑耗下去了，就丢一道中等难度的笔试题折磨他，校招丢简单难度就足够了，给自己喘口气，过不过看答题情况。<b>第二个原因</b>，算法能考察候选人软技能，如果一个简单的数组问题，候选人一声不吭花30分钟还没做出来，那就能说明这个候选人不聪明、不善于表达、不喜欢交流等等，而如果另一个候选人一上来就反问面试官，你是要O(n)、O(n^2)、还是O(nlogn)的解决思路呢，那起码能说明这个候选人是更加聪明自信，更加擅长交流和表达的。<b>第三个原因</b>，算法能白嫖绝版物品，在leetcode商店可以用积分免费换会员、帽子、衣服、外套、鼠标垫，现在能嫖到的最贵的东西是8000积分的无线充电器，如果以后出现工程椅子、苹果电脑、手机可以白嫖，那不会算法的前端就只有看面试官白嫖的份了，同时还要被面试官用算法折磨。</p> <p>可能有人告诉你，把剑指offer刷完前端算法3年以内就没问题，也有人可能会说用题海战术多刷Leetcode算法就会好，但事实是如果你求快为了刷题而刷题，刷题速度快于吸收速度，逻辑思维差推倒不出规律，理解能力弱简化不了问题，给出条件不能一眼看出解题方向，那出题者把题目抽象成另一个题，你就做不出来了，结果就是对于一个从未见过的简单算法题你做得出来，只不过要花15分钟，而人家榜一大佬从读题到AC只花1分半钟，所以有的时候你和算法大神相差的可能不仅仅是某个算法的实现，而是<strong>半个&quot;数学学位&quot;带来的数学思维</strong>。</p> <p>再说前端算法不可能取代后端算法，如果取代了，只能说那个后端很菜，或者这个前端已经转成为后端了。很多前端都是为了应试而去看剑指offer，还不一定坚持的下来，在算法的领域这本书的75道题只是凤毛菱角，而人家门当户对的后端岗位学算法则是以年为单位，所以前端为什么要学算法？因为几乎是没有大学有开设前端课，所有计算机专业的学生都是以后端角度起步，算法还是必修课所以算法能力不应该差，那如果觉悟早，大二就入门前端，算法用得少，笔试编程题写不出可不可以，当然可以，可一个前端觉悟早总得有亮点吧，如果也亮点没有算法还不行，找不到工作就很正常了。</p> <img src="/blog/images/IMG_8029.gif" class="emo"> <p>刷Leetcode也好，看最优解也好，目的是培养数学建模的意识，作为前端，如果连为什么要学算法、怎么学算法都不知道就去刷题，那就是在没到刷题level的时候越级训练，软开大神，算法大神怎么练你就怎么练，为了刷题而去刷题结果不言而喻，就好比学英语，毋庸置疑，听说读写背单词，培养心态和树立目标是前置准备，之后跟老外用英语交流才是进阶训练，但如果你词汇量少听的少，连别人说的英文是什么意思都听不懂你就开始blablabla地说，还听别人的建议Be confident去跟老外<strong>大胆地大声地</strong>说英语，这种行为就等同于在没有基础的情况下进行进阶训练，还以为自己有大佬独传的最有效的训练方法，这方法对大佬有用就以为对自己也有用，自己已经有大佬一样的基础了，甚至有的人遇到瓶颈了，连学英语的初衷都不知道是什么，为什么要学英语也不知道，支持自己坚持下去的理由也没有，可不难受吗，基础不牢得不到有效的输入，不能正常地输出，接受不到正确的反馈，容易掉进坑里爬不出来，<strong>但不代表这样学不好</strong>，因为有的人脸皮是真的厚运气是真的好啊2333。</p> <p>有的人喜欢完美主义，觉得自己学不下去了不是智力不好就是基础不好，于是就跟疯狗一样补基础，面经刷到0.1+0.2!=0.3就疯了一样去学二进制转十进制、十进制转十六进制、十六进制转二进制；有的人喜欢应试，把网上能收集到的前端面试题像错题本一样都收集起来，一共将近有1000道面试题简答；有的人喜欢好高骛远，js基础都没打好就来学react，各种this问题，工作找不到了就去发帖：“现在前端市场是不是饱和了？”</p> <p>你做的事门槛越低，人就越多，就越要靠关系，可反过来你做的事别人做不了，你能力越强就越不需要靠关系，所以年轻人先不要考虑适应所谓的环境，而是要时时刻刻想着要如何提高自己能力，去选择和创造你想要的环境，要知道大前端环境下，高级资深前端肯定是任何时候供不应求，而且找工作永远是今年最难，瞬息万变，可能你刚开始学JS，市场上要求必须会jQuery，过了段时间你jQuery已经玩得很6了，市场觉得jQuery已经过时了必须会Vue，再过段时间等你学会了Vue全家桶原理，市场又要求必须会Node服务端，等你会了Node服务端，市场又要求必须是3年经验的技术总监，仿佛市场要的永远是比自己入行早的上一波前端，所以对于没有工作经验的自学小白来讲，大半年找不到靠谱的工作都很正常。</p> <img src="/blog/images/IMG_8649.gif" class="emo"> <p><b>前端小白入门现状？</b>对前端来说，就不得不提培训机构了，毕竟目前95%的前端某种程度来说都是上过网课的，但每个人的结局却截然不同，有的人前端背景不好，把培训班当救命稻草；有的人大厂实习前就已经有了1年经验，报班只是顺便补个习。一个刚接触前端的小白会发现，网上的好人太多了，他们不辞幸苦地分享并告诉小白怎么样能容易地挣到钱，以其解救劳苦大众于危难之中，但是通常结果就是，要么花了时间还没有找到工作，更惨的可能是非但没找到工作还要花更多钱或者职业生涯走偏毁掉了。那么培训机构的套路都有哪些呢？<b>第一个套路</b>，培训机构喜欢拿可能性当普遍性，比如培训机构最喜欢的就是讲故事，啊，我们班一个同学，非科班的，零基础的学员，转行前端5个月，进了某大公司，现在年薪30w，所以只要跟着老师好好学，任何人都能拿高薪。首先，我们不去管这个故事的真伪性，从可能性上来讲，它是一个极低极低概率发生的事情，但是到了培训机构的嘴里就会变成这个极低概率的事情正是适合小白的事情，如果他口才够好他一定能把小白讲的头脑发热，哎呀，人家这个样子都能挣到30w，我比他强多了鸭，那我要跟着老师好好学一下怎么挣这个钱。<b>第二个套路</b>，培训机构喜欢拿风口论当成功学，比如人工智能很火，大数据很火，区块链很火，前端很火，新机会来了，潮流推动，你不来你就挣不到钱了，然后小白就会很心动，更进一步，培训机构会说选择比努力更重要，十年前你错过电商，五年前你错过微信，三年前你错过微商，去年你错过区块链，今年你还要错过前端吗？小白哇的一听，爆灯了，觉得就应该跟着老师去学，这些市场行情会让小白产生不安和焦虑感，这个不安就是下一步掏钱和花时间的动力2333。<b>第三个套路</b>，培训机构喜欢在安慰人的同时营造欢快的氛围，比如，前天8:30没来的你，这次你绝对不能错过，系兄弟就来康我！其实他们根本不知道今年的SP校招生有多优秀，所谓的必备基础知识范围也越来越大，但做好的课程是不会那么及时把这种东西补上来的，因为讲师早就已经毕业多年对今年校招是完全不知情的，加上再简单的知识如果学员不会，他们也会说没关系耐心教，这种缓兵计让学员越来越依赖培训班，还产生一种大家都不会的安逸感觉，就有很多人去相信他跟着他，那他的目的就达到了鸭，反正小白已经进入了他的逻辑范围了，总之就是<b>吃相难看</b>。</p> <img src="/blog/images/IMG_8648.gif" class="emo"> <p>培训机构真实的<strong>培训效果往往没有他们对外吹的好</strong>，因为每个人情况不一样，结局也不一样，有的人在他们那培训一年还不如人家看书五个月，连个Vue双向绑定都不知道是什么，原理和深度等于零；有的人觉得看了老师讲的MVVM源码课，拷贝到自己博客自己就懂Vue了；有的人把老师的项目抄了一遍，就觉得可以说成是自己的了；有的人培训一年半最后还进了外包；有的人教什么学什么，别人都去找工作了，不自信到还在二刷三刷，通识培训最后学的统统都不懂，项目是抄的，难点没有需求没有一眼就能识破，框架学到API都记混，面试一深挖coding就跪，至始至终技术都是服务于业务的，为了技术而技术何来深度和热情；还有本来就很优秀的大学生大三就已经实习了一年半，或者代码量已经40万行的那种，只是来顺便报个班补习，最后进了大厂，被培训机构拿去炫耀，对于找不到工作的人，培训机构既不用负责也不会对外说，内推没面试进了外包也没办法，这可真是<strong>外包磨练底子差，大厂加班你功劳</strong>。退一步讲，就算是个良心的培训班，也只能把白天鹅变得更肥更大，并不能把鸭子变成鹅，而如果你是个天鹅，一开始随便进哪个小公司最终不报培训班也会进一线大公司，所以那些学习能力和理解能力差的<strong>杠精</strong>、说话说不清楚的<strong>阴阳人</strong>、还有见不得别人好的<strong>柠檬精</strong>，即使培训了也没啥用，因为这群人又懒又清高、脸皮薄又低情商、不爱学习又不懂社交、不懂感恩和付出、不敢闯不敢拼不敢犯错、不懂求人和信任人。良心的培训班最多只能指出不走弯路的方法，可不代表那条路就可以不存在可以直接跳过，路还是存在的，需要自己去走的，没有哪个人生出来就是很会前端的，大家都是从菜鸟慢慢成长起来的，看到某一个大佬分享文章时，请不要只看到眼前这一篇文章，因为在这篇文章的背后，可是有千千万万篇文章和岁月在垫着的，请不要用单单“天赋”那么单薄的词去覆盖别人所付出的努力，的确是有最强大脑和阿里星的存在，但更多的是努力的人，是外表冷静，内心却燃着熊熊大火的人。</p> <img src="/blog/images/IMG_7674.gif" class="emo"> <p><b>那到底要不要培训呢？</b>我们都知道，一个理想的情况是大二下学期开始入门前端全栈，去小公司实习9个月，加上校内老师安排的项目，在大厂正式秋招之前的暑期日常实习之前，手上完全能掏出5个全栈项目，这样的情况下进大公司实习就很轻松并且完全不需要培训，说到底进大厂实习就是看技术广度深度，学习激情，和动手能力（有人就从网上原封不动抄了一个复杂点的全栈项目，前端培训班出身进到了阿里实习的；也有人走啃书流，年级第二，后端和算法很扎实，虽然没实习经验，但还是大三进字节腾讯实习的），有了大厂实习经历，后面的路也会一帆风顺，见过最顺的前端是毕业后已经是挑公司上的状态而不是被公司挑的那个，同时可以靠内推赚外快的那种，也是培训班出身，算法也就4道能AC出1道的水平，因为<b>前端的价值根本不体现在算法上</b>，所以会十八般武艺的干不过有项目的，有项目的干不过写博客的，写博客的干不过背题的，背题的干不过有实际工作经验的（我当然知道有个例，我只是举个例子嘛～）；虽然什么时候培训完全看个人，但如果大三往后，还是零项目经验，零实习经验，那么培训就收益开始减弱，考研的话另算；毕业了都没实习经历，生涯就已经很偏了，怎么培训都救不了多少，因为对应届生来讲大公司校招很多时候本质上只认前端实习经验或者拥有等价的技能深度，<b>这是培训不来的</b>，而且科班与非科班拉开差距的并不是靠大学里学的东西，而是在校期间的实习经历，导师安排给你的团队全栈大项目，或者优秀前辈校友的一次对话，可能你毕业后参加培训的时间比那个当初进大公司实习的人培训时间都长，学的东西更多，笔记做的更多，其实并没什么用，<b>应届生校招，实习经历是必备，大项目是标配，技能深度更可贵，毕业了一般就只能社招不能实习校招，这些东西光靠报个培训班或者自学是学不来的，虽然可以靠考研来续应届生身份来参加次年的大厂实习和校招，靠学历优势来提升竞争力，但这不应该成为前端考研的理由（个人觉得，有的职位，没有保研或者直博的人找某些岗位容易当炮灰，比如算法，策划，产品...可关键是几乎没有大学有专业的前端教授，更别提有在大学搞前端科研的了，那种一线前端技术的开阔者很多都在大厂研究院里造轮子，总之前端考研肯定是朝着后端热门主题去的）</b>，所以不是培训没有用，而是很多人错过了培训的最好时机或者说觉悟太晚；已经毕业想零基础转行的怎么办呢？这种情况其实没有标准的答案，包装简历，进外包，进小公司，还是转行完全取决于个人；已经转行对薪资不满意的肯定就努力提升技术深度，翅膀硬了就社招进大厂，只要不放弃最差也是大器晚成，所以只要把现实看清，心态就不会那么容易出问题，噢还有，offer call ≠ 意向书 ≠ offer ≠ 三方 ≠ 正常入职 ≠ 试用期能过 ≠ 年底不被优化，嘿嘿！</p> <img src="/blog/images/IMG_8865.gif" class="emo"> <p><b>一定要实习吗？</b>我们都知道，一个技能的形成过程离不开一个人左右脑思维的参与，左脑是逻辑脑，右脑是感知脑，所有的书籍，面经，网课作用只有一个：指明你该如何去实践，而当你在它们的指引下找到了目标时，剩下的就是如何体验的问题，至于你能到达什么样的高度，关键就在于实践体验本身，而不是这些理论，这也是为什么只上网课无法学会前端的道理，这也是为什么光说不练的学习者不可能学会任何技艺，这也是为什么最高效的学习本质是在使用中犯错，这也是为什么练武不练功到老一场空，这也是为什么自己的意识达到一定境界而不再依赖原著才配称得上学成，这也是为什么当忘记了所有招式就练成了太极拳2333，但是，如果没有理论做指引，练习的方向都是错的，那再怎么练也只会浪费时间而已，也就是传说中的假努力。所以，在校期间，当你通过其他方式获得了和实习生一样的技能广度深度，也就不需要实习了，只是这种情况很少见罢了，再有一点就是实习面试是比校招面试要简单的，大厂实习可能是进大厂最简单的方式了，并且是应届生专属，校招不努力错过，毕业了，可能就只剩下遗憾了。实在不行，进大厂搞几个月的劳务实习，放在简历上也是很好看的，就算是正式实习转正失败，就算是劳务实习，只要是个大厂，只会加分不会减分，而且越早觉悟，越早实习，越容易校招拿sp。</p> <img src="/blog/images/IMG_8740.gif" class="emo"> <p><b>前端需要掌握的算法？</b>算法修炼和数学素养是要倾尽一生去培养的，前端岗，软开岗，算法岗对算法的要求也是不同的，如果说闻道有先后术业有专攻，那么教育和成长的过程决定了每个前端对算法的态度，如果是调接口写页面的，那工作多年连算法复杂度不知道都很正常，如果是搞react fiber架构的，那这样的前端都得是有着丰富后端背景的人，而实际工作中复杂的算法设计一般来讲完全轮不到前端来做，也很少有纯前端会像后端一样去打leetcode周赛，可又不能排除有个别例子，这群人会说算法很有用，那些说没用的都是没机会用到算法的前端，他们不允许其他前端否定他们的努力；还有一群人，问他为什么前端要学算法，来一句面试要考，就这，连前因后果都不知道就在那无脑宣传前端算法论，搞得很多新前端都觉得要转后端，结果拿的工资还没后端高，然后就觉得前端处于程序员鄙视链底层，这种人真的就是脑残。抛开大前端环境不谈，现在找工作不管是校招还是社招，基础不差的前提下，有亮点就能找到工作，比如<b>算法数据结构好可以去搞架构方向；工程化能力好可以去搞中后台方向；图形学好可以去搞图形互动方向；Node好可以去搞全栈方向；H5好可以去搞移动端方向</b>，所以剩下值得思考的问题就是<b>作为前端工程师自己的核心竞争力到底是什么？优势是什么？该怎么培养？以后要成为架构型人才，技术型人才，工程型人才，还是业务型人才？</b>这些问题如果工作3年都没有想明白，30岁就容易失业找不到工作。三分学七分练，效果出来之前，稳扎稳打是躲不过的，因为仙友帮不了你，大佬不会帮你，喷子会教育你，所以只有靠自己。切记不要浮躁，不要浮躁，不要浮躁。琴棋书画，三年入行，五年懂行，十年称王。做任何事，都是一个道理，熬得住出众，熬不住出局。大学毕业从来不意味着可以找到专业对口的工作，因为大学学的是专业不是专长，找工作时被有着比自己更多工作经验的面试官面试，一旦自己的技能跟部门技术栈和开发模式不匹配，被问倒了被拒了进人才库了，有的人就很容易联想成是一种老人对新人的刁难，可是在这个机会和挑战共存的时代，任何成功和失败都是暂时的，没有谁的成功是终身的，也没有谁的失败是长久的，面试官可以主宰一场面试，可是无法主宰你的命运。</p></div> <footer class="page-edit"><!----> <div class="last-updated"><span class="prefix">上次更新:</span> <span class="time">2/17/2021, 11:27:55 PM</span></div></footer> <div class="page-nav"><p class="inner"><!----> <span class="next"><a href="/blog/dsm/algorithm.html">
        前端面试算法
      </a>
      →
    </span></p></div> </main></div><div class="global-ui"><BackToTop></BackToTop><!----><Live2D></Live2D></div></div>
    <script src="/blog/assets/js/app.7fa07907.js" defer></script><script src="/blog/assets/js/2.b6c629b5.js" defer></script><script src="/blog/assets/js/11.34cd2f44.js" defer></script><script src="/blog/assets/js/3.589a64d8.js" defer></script>
  </body>
</html>
